package com.gadgets.cm01.role.service;

import com.gadgets.cm01.role.dto.UserRoleAllocationDTO;
import com.gadgets.cm01.role.dto.UserRoleQueryDTO;
import com.gadgets.cm01.role.pojo.Role;
import com.gadgets.cm01.role.pojo.UserRoleRelation;
import com.gadgets.cm01.user.pojo.User;
import com.gadgets.framework.common.dto.Pagination;
import com.gadgets.framework.common.exception.GadgetsServiceException;

import java.util.List;

/**
 * @author UncleXiu
 * @version V1.0.0
 * @data 2020-10-15
 * 
 */
public interface IRoleUserAllocationService {

    /**
     * 角色分配
     * @param allocationDTO             分配信息
     * @throws GadgetsServiceException  异常信息
     */
    void allocationRole(UserRoleAllocationDTO allocationDTO) throws GadgetsServiceException;

    /**
     * 角色收回
     * @param allocationDTO             收回信息
     * @throws GadgetsServiceException  异常信息
     */
    void reAllocationRole(UserRoleAllocationDTO allocationDTO) throws GadgetsServiceException;

    /**
     * 查询用户-角色映射关系
     * @param queryDTO                  查询条件
     * @param pagination                分页条件
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    List<UserRoleRelation> queryUserRoleRelationByCondition(UserRoleQueryDTO queryDTO, Pagination pagination) throws GadgetsServiceException;

    /**
     * 条件查询指定用户的角色信息
     * @param queryDTO                  查询条件
     * @param pagination                分页条件
     * @return                          角色信息
     * @throws GadgetsServiceException  异常信息
     */
    List<Role> queryRoleInfoByCondition(UserRoleQueryDTO queryDTO, Pagination pagination) throws GadgetsServiceException;

    /**
     * 条件查询指定角色的用户信息
     * @param queryDTO                  查询条件
     * @param pagination                分页条件
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    List<User> queryUserInfoByCondition(UserRoleQueryDTO queryDTO, Pagination pagination) throws GadgetsServiceException;

}
